package com.zlop.common.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import lombok.AccessLevel;
import lombok.NoArgsConstructor;

/**
 * 时间工具类
 *
 * @author  曾令鹏
 * @since   jdk1.8
 * @version 2018年4月8日 曾令鹏
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class TimeUtils {

	private static final DateTimeFormatter DEFAULT_DATETIME_FORMATTER = TimeFormat.LONG_DATE_PATTERN_LINE.formatter;

	/**
	 * 获取当前时间
	 * @return yyyy-MM-dd HH:mm:ss 格式时间
	 */
	public static String getCurrentDateTime() {
		return DEFAULT_DATETIME_FORMATTER.format(LocalDateTime.now());
	}

	/**
	 * 获取当前时间
	 * @param timeFormat 时间格式
	 * @return
	 */
	public static String getCurrentDateTime(TimeFormat timeFormat) {
		return timeFormat.formatter.format(LocalDateTime.now());
	}

	/**
	 * 时间格式
	 */
	public enum TimeFormat {
		/**
		 * 时间格式：yyyy-MM-dd
		 */
		SHORT_DATE_PATTERN_LINE("yyyy-MM-dd"),
		/**
		 * 时间格式：yyyyMMdd
		 */
		SHORT_DATE_PATTERN_NONE("yyyyMMdd"),

		/**
		 * 时间格式：yyyy-MM-dd HH:mm:ss
		 */
		LONG_DATE_PATTERN_LINE("yyyy-MM-dd HH:mm:ss"),

		/**
		 * 时间格式：yyyyMMddHHmmss
		 */
		LONG_DATE_PATTERN_NONE("yyyyMMddHHmmss");

		private transient DateTimeFormatter formatter;

		TimeFormat(String pattern) {
			formatter = DateTimeFormatter.ofPattern(pattern);
		}
	}
}
